package controller;
import java.io.File;
import java.net.InetAddress;

import cs.remoteapp.Message;
import main.ChatController;
import model.*;

/**
 * Abstract Class defining the methods of the state class.
 * Package  controller
 * Project ChatSystemG5 - INSA 4INFOA1 - 2013/2014
 * @author Thomas Vuillemin Martin Conant
 */
public abstract class State {
	public ChatController controller;
	
	/*constant for the state in ChatModel*/
	public static final int DISCONNECTED = 0;
	public static final int CONNECTING = 1;
	public static final int CONNECTED = 2;
	
	/**
	 * Abstract constructor of the State
	 * @param controller
	 */
	public State(ChatController controller) {
		super();
		this.controller=controller;
	}
	
	/**
	 * Change the State in the controller
	 * @param newState
	 */
	public void changeState(State newState){
		controller.setCurrentState(newState);
	}
	
	/**
	 * Connect the ChatSystem to the network
	 * @param pseudo of the local user
	 */
	public void connect (String pseudo){
	}
	
	/**
	 * Disconnect the ChatSystem to the network
	 * @param pseudo of the local user
	 */
	public void disconnect() {
	}
	
	/**
	 * Send a TextMessage
	 * @param text to be send
	 * @param adresee
	 */
	public void sendText (String text, User adresee) {
	}
	
	/**
	 * Send a File
	 * @param file file to be send
	 * @param adresee
	 */
	public void sendFile(File file, User adresee) {
	}
	
	/**
	 * select a File
	 * @param fileAdress
	 */
	public void selectFile (String fileAdress) {
	}
	
	public void openFile (int downloadKey) {
	}
	public void saveFile (int downloadKey, String path) {
	}
	
	/**
	 * Accept a file
	 * @param fileName name of the file accepted
	 * @param adresee
	 */
	public void acceptFile (String fileName, User adresee) {
	}
	
	/**
	 * Refuse a file
	 * @param fileName name of the file refused
	 * @param adresee
	 */
	public void refuseFile (String fileName, User adresee) {
	}
	
	/**
	 * add an adresee
	 * @param adresee
	 */
	public void addAdressee (User adresee) {
	}
	
	/**
	 * remove an adresee
	 * @param adresee
	 */
	public void removeAdresee (User adresee) {
	}
	
	/**
	 * Open a new chat window 
	 * @param adresee the user which with the conversation is held
	 */
	public void openNewChatWindow (User adresee) {
	}
}
